Scaled Dot-Product Attention
Scaled Dot-Product Attentionは、Transformerモデルの中心的な部分です。
このメカニズムは、特定の情報に「注意」を払う方法です。
基本的には、ある単語(query)が他の単語(key-valueペア)にどれだけ関連しているかを評価します。
Query (Q): 注目している単語(検索対象の単語)。
Key (K): 比較対象の単語。
Value (V): Keyに関連した値、情報。
QueryとKeyのドット積(内積)を計算し、各Queryが各Keyにどれだけ注目すべきかのスコアを得ます。
このスコアが大きくなりすぎないように、Keyベクトルの次元数の平方根(√𝑑𝑘)で割ります。これが「Scaled」の部分です。
これらのスコアにsoftmax関数を適用し、確率に変換します。
これにより、どのKeyにどれだけ注目するかが決まります。
最後に、これらの確率(Attention Weights)をValueに掛け合わせ、加重平均を取ることで、最終的な出力(context vector)を得ます。
ポイントは、このメカニズムが一度にすべての単語に対して行われることです。
つまり、一つの単語が他の全ての単語との関連度を同時に計算し、最終的な表現を得るわけです。
ただし、この方法には欠点もあります。
特に、長い文章ではメモリ消費が大きくなることがあります。
これは、QとKの行列積が文章の長さに応じて大きくなるためです。
このメカニズムは、Transformerモデルにおいて非常に効率的で、従来のAdditive Attention(加法注意)よりも計算が速いとされています。
最後に触れられているMaskingは、特定の情報(通常は未来の情報)を無視するために使われます。これは、特に予測タスクにおいて重要です。
たとえば、文章を生成する際に、まだ生成されていない単語に注意を払わないようにします。